import time
import os
import csv
class WriteResult(object):
    default_path=r"E:\tester79\woniusales_ui_test5_ddt\log"
    def __init__(self):
        self.filename=os.path.join(self.default_path,time.strftime("%Y%m%d%H%M%S"))   # 根据时间记录文本

    def write_header(self,fieldn):
        """
        :param fieldn: 头部
        :return:
        """
        """只写头"""
        with open(self.filename,"a",encoding="utf8",newline="") as f:
            dict_writer=csv.DictWriter(f,fieldnames=fieldn)
            dict_writer.writeheader()
    def write_data_row(self,data):
        """
        :param data: 传入字典
        :return:
        """
        #遇到的问题： 有换行符，在文本中写入时会换行。
        w_data=data.copy()  # 拷贝一份，不要对原数据进行修改
        for k,v in w_data.items():
            w_data[k]=v.replace("\n","\\n")
        """只写数据"""
        with open(self.filename,"a",encoding="utf8",newline="") as f:
            fieldn=w_data.keys()
            dict_writer=csv.DictWriter(f,fieldnames=fieldn)
            dict_writer.writerow(w_data)

if __name__ == '__main__':
    data=[{'编号(serial_number)': 'test_1', '标题(title)': '管理员登录', '包(package)': 'woniusales_ui_test5_ddt.case', '模块(.py)': 'test_login', '类(class)': 'TestLogin', '方法(method)': 'test_login_success', '步骤(args)': 'usernam=admin\npassword=admin123\nverifycode=0000', '预期结果(expect)': '成功', '实际结果(通过/不通过)': '发生了异常', '执行时间': '2021-03-11 16:56:42', '执行信息': "123"}, {'编号(serial_number)': 'test_2', '标题(title)': '老板登录', '包(package)': 'woniusales_ui_test5_ddt.case', '模块(.py)': 'test_login', '类(class)': 'TestLogin', '方法(method)': 'test_login_success', '步骤(args)': 'username=lm\npassword=LiuM123\nverifycode=0000', '预期结果(expect)': '成功', '实际结果(通过/不通过)': '通过', '执行时间': '2021-03-11 16:56:45', '执行信息': '正常执行完成'}]
    w=WriteResult(data)
    w.write_header()
    w.write_data_row(data[0])
